﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ProjetoJVA.localhostProfessor;
using System.Web.Services.Protocols;

namespace ProjetoJVA.Gui
{
    public partial class NovoProfessorTela : Form
    {
        ListView listaProfessor;
        ServiceProfessor servicoProfessor = new ServiceProfessor();

        public NovoProfessorTela(ListView listaProfessor)
        {
            InitializeComponent();
            this.listaProfessor = listaProfessor;
        }

        private void NovoProfessorTela_Load(object sender, EventArgs e)
        {
            this.FormBorderStyle = FormBorderStyle.FixedDialog;
            carregarCombo();
        }

        private void botaoCancelar_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        private void carregarCombo()
        {
            ProjetoJVA.localhost.Service1 servicoDisciplina = new ProjetoJVA.localhost.Service1();
            List<localhost.Disciplina> lista = servicoDisciplina.listar().ToList();
            for (int i = 0; i < lista.Count; i++)
            {
                comboDisciplina.Items.Add(lista[i].Nome);
            }
        }

        private void inserir()
        {
            this.Cursor = Cursors.WaitCursor;
            try
            {
                Professor professor = new Professor();
                professor.Nome = campoNome.Text;
                professor.Endereco = campoEndereco.Text;
                professor.Fone = campoFone.Text.Replace("(", "").Replace(")", "").Replace("-", "").Replace(" ", "");
                professor.Email = campoEmail.Text;
                professor.Sexo = Convert.ToChar(comboSexo.SelectedItem);
                professor.Funcao = campoFuncao.Text;
                professor.Titulacao = campoTitulacao.Text;

                Disciplina disciplina = new Disciplina();
                disciplina.Nome = comboDisciplina.SelectedItem.ToString();

                professor.Disciplina = disciplina;

                servicoProfessor.inserir(professor);
                MessageBox.Show("Incluido com sucesso!");
                this.Dispose();
            }
            catch (SoapException ex)
            {
                var menssagem = ex.Message;
                menssagem = menssagem.Remove(0, menssagem.LastIndexOf("--->"));
                menssagem = menssagem.Remove(0, menssagem.IndexOf(":") + 1);

                if (menssagem.IndexOf('\n') >= 0)
                {
                    menssagem = menssagem.Remove(menssagem.IndexOf('\n'));
                }

                MessageBox.Show(menssagem, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            catch (NullReferenceException)
            {
                MessageBox.Show("Campos Sexo e Disciplina devem ser selecionados!", "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            this.Cursor = Cursors.Default;
        }

        private void botaoOk_Click(object sender, EventArgs e)
        {
            inserir();
            atualizarLista();
        }

        private void comboSexo_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        private void comboDisciplina_KeyPress(object sender, KeyPressEventArgs e)
        {
            e.Handled = true;
        }

        public void atualizarLista()
        {
            List<Professor> lista;
            try
            {
                lista = servicoProfessor.listar().ToList<Professor>();

                listaProfessor.Items.Clear();
                for (int i = 0; i < lista.Count; i++)
                {
                    ListViewItem linha = listaProfessor.Items.Add(lista[i].Matricula.ToString());
                    linha.SubItems.Add(lista[i].Nome);
                    linha.SubItems.Add(lista[i].Endereco);
                    linha.SubItems.Add(lista[i].Fone);
                    linha.SubItems.Add(lista[i].Email);
                    linha.SubItems.Add(lista[i].Sexo.ToString());
                    linha.SubItems.Add(lista[i].Funcao);
                    linha.SubItems.Add(lista[i].Titulacao);
                    linha.SubItems.Add(lista[i].Disciplina.Nome);
                }

            }
            catch (SoapException ex)
            {
                var menssagem = ex.Message;
                menssagem = menssagem.Remove(0, menssagem.LastIndexOf("--->"));
                menssagem = menssagem.Remove(0, menssagem.IndexOf(":") + 1);

                if (menssagem.IndexOf('\n') >= 0)
                {
                    menssagem = menssagem.Remove(menssagem.IndexOf('\n'));
                }

                MessageBox.Show(menssagem, "Alerta", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }

        }

    }
}
